#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "inputtextedit.h"       	// 自定义输入控件
#include "skinmanager.h"         	// 皮肤管理
#include "inputcontext.h"  			// 输入模式管理
#include "settingsdialog.h"   		// 设置对话框
#include "numpadpanel.h"      		// 数字面板

#include <QMainWindow>
#include <QStatusBar>
#include <QLabel>
#include <QPushButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT	

public:
	MainWindow(QWidget *parent = nullptr);
    ~MainWindow() override;

private slots:
	// func tool
	void onSimplifiedTraditionalToggle();  // 简繁切换
    void onSettingsClicked();               // 打开设置
    void onNumpadClicked();                 // 打开数字面板
	// moulde change
	void onCnEnModeChanged(bool isCn);      // 中英文模式变更
    void onSkinChanged();                   // 皮肤切换同步
	// config change refresh
	void onConfigChanged();

private:
    // 初始化函数
    void initUI();              // 布局与控件初始化
    void initStatusBar();       // 状态栏初始化
    void initShortcuts();       // 快捷键初始化
    void initSignalConnections();// 信号槽连接

private:
	// 核心控件
    InputTextEdit *m_inputEdit;       // 输入区域
    QLabel *m_modeIndicator;          // 模式指示器（中/En）
    QPushButton *m_cnEnBtn;           // 中英文切换按钮
    // 状态与管理类
    InputContext *m_inputContext;     // 输入上下文（中英文/简繁模式）
    SkinManager *m_skinManager;       // 皮肤管理器
    SettingsDialog *m_settingsDialog; // 设置对话框（单例复用）
    NumpadPanel *m_numpadPanel;       // 数字面板（单例复用）
    // 状态栏组件
    QLabel *m_statusLabel;            // 状态提示（如“离线拼音模式”）
    QLabel *m_cacheLabel;             // 缓存命中率显示

};


#endif	// MAINWINDOW_H